/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.uniceub.fsw.testes.facade;

import br.uniceub.fsw.arquitetura.persistencia.transacao.Transacao;
import br.uniceub.fsw.testes.dao.CasoTesteDAO;
import br.uniceub.fsw.testes.dao.RegistrarResultadoDAO;
import br.uniceub.fsw.testes.dao.StatusCasoTesteDAO;
import br.uniceub.fsw.testes.dao.TipoTesteDAO;
import br.uniceub.fsw.testes.vo.CasoTesteVO;
import br.uniceub.fsw.testes.vo.RegistrarResultadoVO;
import br.uniceub.fsw.testes.vo.StatusCasoTesteVO;
import br.uniceub.fsw.testes.vo.TipoTesteVO;
import br.uniceub.fsw.util.Html;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

/**
 *
 * @author Abrahao
 */
public class RegistrarResultadoFacade {

    public String operacao(HttpServletRequest req) {

        String oper = req.getParameter("operacao");

        if (oper == null || oper.equals("")) {
            return "";
        }
       
        if (oper.equals("excluir")) {
            RegistrarResultadoVO registrarResultadoVO = new RegistrarResultadoVO();
            registrarResultadoVO.setIdOrdemServico(Integer.parseInt(req.getParameter("idOSSelecionada")));
            registrarResultadoDAO.excluir(registrarResultadoVO);
          
        }
        return "";
    }
    CasoTesteDAO casoDAO = new CasoTesteDAO();
    RegistrarResultadoDAO registrarResultadoDAO = new RegistrarResultadoDAO();
    TipoTesteDAO tipoDAO = new TipoTesteDAO();
    StatusCasoTesteDAO statusDAO = new StatusCasoTesteDAO();
    Html montarHtml = new Html();

    /**
     * Monta o código HTML da página de registro de resultado de teste
     * @param req
     * @return
     */
    public String montarRegistrarResultado(HttpServletRequest req) {
        StringBuffer sb = new StringBuffer();
        StatusCasoTesteVO statusVO = new StatusCasoTesteVO();
        List<StatusCasoTesteVO> listaStatusVO = statusDAO.consultarPorExemplo(statusVO);
        TipoTesteVO tipoVO = new TipoTesteVO();
        CasoTesteVO casoVO = new CasoTesteVO();
        casoVO = casoDAO.consultarPorId(Integer.parseInt(req.getParameter("idCasoTeste")));
        tipoVO = tipoDAO.consultarPorId(casoVO.getCdTipoTeste());
        sb.append("<TABLE>\n");
        sb.append("<TR>\n");
        sb.append("<TD>Código do Caso:</TD>\n");
        sb.append("<TD>" + casoVO.getIdCasoTeste() + "</TD>\n");
        sb.append("<input type='hidden' name='idCasoTeste' value='" + casoVO.getIdCasoTeste() + "' >");
        sb.append("<TD>Nome do Caso:</TD>");
        sb.append("<TD>" + casoVO.getNoCasoTeste() + "</TD>");
        sb.append("</TR>\n");
        sb.append("<TR>\n");
        sb.append("<TD>Tipo de Teste:</TD>\n");
        sb.append("<TD>" + tipoVO.getNoTipoTeste() + "</TD>\n");
        sb.append("</TR>\n");
        sb.append("<TR>\n");
        sb.append("<TD>Estado do Teste:</TD>\n");
        sb.append("<TD>" + montarHtml.criarComboBox(listaStatusVO, "idStatusCasoTeste", "noStatusCasoTeste", casoVO.getCdStatusCasoTeste()) + "</TD>\n");
        sb.append("</TR>\n");
        sb.append("</TABLE>\n");

        return sb.toString();

    }

    public String montarComboEstadoTeste(HttpServletRequest req) {

        StringBuffer sb = new StringBuffer();
        StatusCasoTesteVO statusVO = new StatusCasoTesteVO();
        List<StatusCasoTesteVO> listaStatusVO = statusDAO.consultarPorExemplo(statusVO);
        StatusCasoTesteVO statusVOSelecione = new StatusCasoTesteVO();
        statusVOSelecione.setIdStatusCasoTeste(0);
        statusVOSelecione.setNoStatusCasoTeste("Selecione");
        listaStatusVO.add(0, statusVOSelecione);
        sb.append("<TD>" + montarHtml.criarComboBox(listaStatusVO, "idStatusCasoTeste", "noStatusCasoTeste", 0) + "</TD>\n");

        return sb.toString();
    }

    public String montarResultado(HttpServletRequest request) {
        StringBuffer sb = new StringBuffer("");
        Integer  idOs=null;
        Integer  idEstadoOS = null;
        if(request.getParameter("idOS")!=null && request.getParameter("idOS").length() > 0)
            idOs = Integer.parseInt(request.getParameter("idOS"));

        if(request.getParameter("idStatusCasoTeste")!=null &&
                Integer.parseInt(request.getParameter("idStatusCasoTeste"))!=0)
            idEstadoOS = Integer.parseInt(request.getParameter("idStatusCasoTeste"));

        List<RegistrarResultadoVO> lista = 
                    registrarResultadoDAO.consultar(idOs, request.getParameter("idTituloOS"),idEstadoOS);
        sb.append("<tr>");
        sb.append("<td width='100%' align='center' valign='top' colspan=4>");
        sb.append("<BR>");
        sb.append("<B>Realizar Testes:</B>");
        sb.append("<BR>");
        sb.append("<BR>");
        sb.append("</td>");
        sb.append("</tr>");
        sb.append("<TABLE>");
        sb.append("<TR class='tituloTabela'>");
        sb.append("<TD>&nbsp;</TD>");
        sb.append("<TD> Número OS  </TD>");
        sb.append("<TD> Título da OS  </TD>");
        sb.append("<TD> Estado da OS  </TD>");
        sb.append("<TD> Projeto  </TD>");
        sb.append("<TD> Dt. Prev. para Início </TD> ");
        sb.append("</TR>");
        for (int i = 0; i < lista.size(); i++) {
            if (i % 2 == 0) {
                sb.append("<TR><TD>");
            } else {
                sb.append("<TR class='impar'><TD>");
            }
            sb.append("<input class='radio' type='radio' name='idOSSelecionada' value='" + lista.get(i).getIdOrdemServico() + "'/></TD>");
            sb.append("<TD> " + lista.get(i).getIdOrdemServico() + "</TD>");
            sb.append("<TD> " + lista.get(i).getDsOrdemServico() + "</TD>");
            sb.append("<TD> " + lista.get(i).getDsStatusOrdemServico() + "</TD>");
            sb.append("<TD> " + lista.get(i).getDsProjeto() + "</TD>");
             sb.append("<TD> " + lista.get(i).getDhInicioPrevistaFmt() + "</TD>");
            sb.append("</TR>");
        }
        sb.append("</TABLE>");
        return sb.toString();

    }

    /**
     * Salva no banco de dados o resultado do teste
     * @param req
     */
    public void registrarResultado(HttpServletRequest req) {
        CasoTesteVO casoVO = new CasoTesteVO();
        casoVO =
                casoDAO.consultarPorId(Integer.parseInt(req.getParameter("idCasoTeste")));
        casoVO.setCdStatusCasoTeste(Integer.parseInt(req.getParameter("idStatusCasoTeste")));
        try {
            Transacao.iniciar();
            casoDAO.alterar(casoVO);
            Transacao.efetivar();
        } catch (Exception ex) {
            System.out.println(ex);
            Transacao.desfazer();
        }
    }
}
